﻿using Microsoft.Practices.Unity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Framework.IOC
{
    public interface IDIContainer : IServiceProvider
    {
        dynamic GetContainerObjcet();
        IDIContainer RegisterInstance(Type t, object instance);
        //IDIContainer RegisterInstance(Type t, string name, object instance);
        //IDIContainer RegisterInstance(Type t, string name, object instance, LifetimeManager lifetime);

        IDIContainer RegisterType(Type from, Type to, params RegisterArguments[] registerArguments);
        //IDIContainer RegisterType(Type from, Type to, string name);

        //IDIContainer RegisterType(Type from, Type to, string name, LifetimeManager lifetimeManager, params InjectionMember[] injectionMembers);

        T Resolve<T>();
        //T Resolve<T>(string name);
        //T Resolve<T>(string name, object overridedArguments);
        //T Resolve<T>(object overridedArguments);
    }
}
